#pragma once

#include "../mq_comm/mq_helper.hpp"
#include "../mq_comm/mq_log.hpp"
#include "../mq_comm/mq_msg.pb.h"

#include <iostream>
#include <unordered_map>
#include <mutex>
#include <vector>
#include <string>
#include <functional>
#include <memory>

namespace mq
{
    using ConsumerCallBack = std::function<void(const std::string, const BasicProperties *bp, const std::string)>;
    struct Consumer
    {
        using ptr = std::shared_ptr<Consumer>;

        std::string tag;   // 消费者标识
        std::string qname; // 消费者订阅的队列名称
        bool auto_ack;     // 是否自动应答
        ConsumerCallBack callback; // 消费者对应的回调执行函数

        Consumer(){}
        Consumer(const std::string &ctag, const std::string &queue_name, bool ack_flag, const ConsumerCallBack &cb) : tag(ctag), qname(queue_name), auto_ack(ack_flag), callback(cb)
        {}
    };


}